/**
 * 插件组管理 API 接口
 * Author: 豆子高
 * Date: 2025/1/16
 */

/**
 * 获取所有可用插件组列表
 */
function api_plugin_group_list(params, callback) {
    var url = '/chat/plugin-group/list';
    if (params.agentId) {
        url += '?agentId=' + params.agentId;
    }
    
    fetch(url, {
        method: 'GET',
        headers: {
            'Content-Type': 'application/json',
        }
    })
    .then(response => response.json())
    .then(data => {
        if (callback) callback(data);
    })
    .catch(error => {
        console.error('获取插件组列表失败:', error);
        if (callback) callback({code: 500, message: '网络错误'});
    });
}

/**
 * 获取智能体已绑定的插件组列表
 */
function api_agent_plugin_groups(agentId, callback) {
    fetch(`/chat/plugin-group/agent/${agentId}`, {
        method: 'GET',
        headers: {
            'Content-Type': 'application/json',
        }
    })
    .then(response => response.json())
    .then(data => {
        if (callback) callback(data);
    })
    .catch(error => {
        console.error('获取智能体插件组列表失败:', error);
        if (callback) callback({code: 500, message: '网络错误'});
    });
}

/**
 * 绑定插件组到智能体
 */
function api_plugin_group_bind(params, callback) {
    fetch('/chat/plugin-group/bind', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(params)
    })
    .then(response => response.json())
    .then(data => {
        if (callback) callback(data);
    })
    .catch(error => {
        console.error('插件组绑定失败:', error);
        if (callback) callback({code: 500, message: '网络错误'});
    });
}

/**
 * 解绑插件组
 */
function api_plugin_group_unbind(agentId, pluginGroupId, callback) {
    fetch(`/chat/plugin-group/unbind/${agentId}/${pluginGroupId}`, {
        method: 'DELETE',
        headers: {
            'Content-Type': 'application/json',
        }
    })
    .then(response => response.json())
    .then(data => {
        if (callback) callback(data);
    })
    .catch(error => {
        console.error('插件组解绑失败:', error);
        if (callback) callback({code: 500, message: '网络错误'});
    });
}

/**
 * 更新插件组绑定配置
 */
function api_plugin_group_update(params, callback) {
    fetch('/chat/plugin-group/update', {
        method: 'PUT',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify(params)
    })
    .then(response => response.json())
    .then(data => {
        if (callback) callback(data);
    })
    .catch(error => {
        console.error('插件组配置更新失败:', error);
        if (callback) callback({code: 500, message: '网络错误'});
    });
}